The present invention relates to software and software development, and more particularly to a method and system for autonomically prioritizing software defects using programmatic static analysis or the like of computer source code.
Static analysis may be broadly defined as analyzing software or source code for the purpose of identifying possible defects without actually executing the software. Examples of commercially available tools for performing static analysis may include FindBugs available from SourceForge.net, JTest or C++ Test available from the Parasoft Corporation, Monrovia, Calif. These are examples of programmatic static analyzers that “read” software source code and report perceived defects. The total number of defects reported by such static analysis tools is typically high compared to the number of defects software developers may actually be motivated to fix or correct. Developers typically need to filter the multitude of potential defects and then prioritize the defects for correction. This can be time consuming and tedious and needs to be done for each revision, modification or new version of the same source code and for each new body of source code. These systems do not provide a means to autonomically re-prioritize defects after modification during typical software development or lifecycle updates. These systems also do not provide any mechanism to track which types of defects may be more important than others to a developer or an order in which a developer may approach fixing or correcting different types of defects based on a particular developer's pervious behavior in fixing defects so that such a priority or scheme may be applied to new versions of the software or other software products. Additionally, there may be no means for assigning weights based on types of defects discovered during analysis or based on project-oriented aspects.